Protractor হল Angular অ্যাপ্লিকেশনগুলির জন্য তৈরি একটি End-to-End (E2E) টেস্টিং ফ্রেমওয়ার্ক। এটি Angular অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) টেস্ট করতে ব্যবহৃত হয়, যেখানে বিভিন্ন ফিচার, পেজ ইন্টারঅ্যাকশন এবং ইউজার ইন্টারফেসের রেসপন্সনেস পরীক্ষা করা হয়। Protractor ব্যবহার করে, আপনি ব্রাউজারে অ্যাপ্লিকেশন চালু করতে পারেন, ইউজার ইন্টারঅ্যাকশন সিমুলেট করতে পারেন এবং অ্যাপ্লিকেশনের বিভিন্ন অংশের কার্যকারিতা পরীক্ষা করতে পারেন।
Protractor একটি ম্যাসিভ অ্যাসিনক্রোনাস অ্যাপ্লিকেশন হিসাবে কাজ করে, Angular স্পেসিফিক অ্যাসিনক্রোনাস টাস্কের সাথে ডিল করতে এটি বিশেষভাবে ডিজাইন করা হয়েছে। এটি WebDriverJS-এর উপরে ভিত্তি করে তৈরি, যা Selenium WebDriver এর জন্য JavaScript API।
প্রথমে, আপনার প্রোজেক্টে Protractor ইন্সটল করা প্রয়োজন। Angular CLI-এ সাধারণত Protractor ইতিমধ্যেই অন্তর্ভুক্ত থাকে, তবে যদি আপনার প্রোজেক্টে এটি না থাকে, তাহলে আপনাকে নিজে থেকে ইনস্টল করতে হবে।
npm install protractor --save-dev
এছাড়া, Angular CLI প্রজেক্টে যদি End-to-End টেস্টিং সেটআপ না থাকে, তাহলে আপনি ng add কমান্ড ব্যবহার করে এটি যুক্ত করতে পারেন:
ng add @angular/e2e
এটি প্রোজেক্টে Protractor এবং প্রাসঙ্গিক কনফিগারেশন ফাইল যুক্ত করবে।
Protractor কনফিগারেশন ফাইল হল একটি .conf.js
ফাইল যা টেস্টের জন্য ব্রাউজার, URL, এবং অন্যান্য সেটিংস কনফিগার করতে ব্যবহৃত হয়। এটি সাধারনত e2e/
ফোল্ডারে থাকে।
exports.config = {
directConnect: true, // Use the local WebDriver instead of the Selenium Server
baseUrl: 'http://localhost:4200', // অ্যাপ্লিকেশনের লোকাল URL
framework: 'jasmine', // Jasmine ফ্রেমওয়ার্ক ব্যবহার
specs: ['./src/app/**/*.e2e-spec.ts'], // টেস্ট স্পেসিফিকেশন ফাইলের পাথ
capabilities: {
browserName: 'chrome', // ব্রাউজার হিসেবে Chrome ব্যবহার
},
jasmineNodeOpts: {
showColors: true, // টেস্ট রেজাল্টে রং দেখাবে
defaultTimeoutInterval: 30000, // টাইমআউট সময় 30 সেকেন্ড
},
};
এটি এমন কনফিগারেশন যেখানে baseUrl
সেট করা হয়েছে, যাতে localhost:4200-এ অ্যাপ্লিকেশন চালু করা যায়। এছাড়াও, টেস্টের জন্য Chrome ব্রাউজার ব্যবহার করা হচ্ছে।
Protractor টেস্ট লেখার জন্য সাধারণত Jasmine বা Mocha ফ্রেমওয়ার্ক ব্যবহার করা হয়। Jasmine হল একটি জনপ্রিয় টেস্ট ফ্রেমওয়ার্ক যা প্রোঅ্যাকটর দ্বারা ডিফল্ট হিসেবে ব্যবহৃত হয়। আপনি describe, it, beforeEach, afterEach ইত্যাদি Jasmine ফাংশন ব্যবহার করে টেস্ট কেস লিখতে পারেন।
ধরা যাক, আপনার অ্যাপ্লিকেশনের একটি ফর্মে ইউজার নাম ইনপুট করার ফিচার রয়েছে। এই ফিচারটি পরীক্ষা করার জন্য নিচের মত একটি টেস্ট লিখতে পারেন:
app.e2e-spec.ts:
import { browser, by, element } from 'protractor';
describe('My Angular App', () => {
it('should display welcome message', async () => {
await browser.get('/'); // অ্যাপ্লিকেশন হোমপেজে যান
const message = await element(by.css('h1')).getText(); // h1 ট্যাগের টেক্সট নিন
expect(message).toEqual('Welcome to my app!'); // আশা করা হচ্ছে যে টেক্সটটি 'Welcome to my app!' হবে
});
it('should accept input in the form', async () => {
await browser.get('/form'); // ফর্ম পেজে যান
const nameInput = element(by.css('input[name="username"]'));
await nameInput.sendKeys('John Doe'); // ইউজারনেম ইনপুট ফিল্ডে 'John Doe' পাঠান
const value = await nameInput.getAttribute('value');
expect(value).toEqual('John Doe'); // নিশ্চিত করুন যে ইনপুটের মান 'John Doe' হয়েছে
});
});
এখানে, browser.get('/');
কমান্ডটি অ্যাপ্লিকেশনের হোমপেজে চলে যাবে এবং সেখানে একটি টেস্ট করা হবে। expect()
ফাংশনটি ব্যবহার করে আশা করা হচ্ছে যে h1
ট্যাগের টেক্সট হবে 'Welcome to my app!'
।
আপনার টেস্টগুলো চালানোর জন্য Angular CLI ব্যবহার করে ng e2e
কমান্ড রান করতে হবে। এটি Protractor ব্যবহার করে আপনার End-to-End টেস্ট চালাবে।
ng e2e
এই কমান্ডটি টেস্ট চালাবে এবং আপনি যদি সফলভাবে টেস্ট পাস করেন তবে স্ক্রিনে সফলতার বার্তা দেখতে পাবেন।
Protractor একটি শক্তিশালী টুল যা Angular অ্যাপ্লিকেশনগুলির End-to-End টেস্টিং সহজ করে তোলে। এটি Angular-specific উপাদান ও আচরণ (যেমন, ডায়নামিক DOM আপডেট, অ্যাসিনক্রোনাস অপারেশন ইত্যাদি) সঠিকভাবে টেস্ট করার জন্য ডিজাইন করা হয়েছে। Protractor-এর মাধ্যমে আপনি UI টেস্ট, ইন্টারঅ্যাকশন এবং ইউজার ফ্লো পরীক্ষা করতে পারবেন, যা একটি অ্যাপ্লিকেশনের কার্যকারিতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে সহায়তা করে।
Read more